package com.gupaoedu.springboot.springbootfirst.thirdDemo;

import org.springframework.context.annotation.ImportSelector;
import org.springframework.core.type.AnnotationMetadata;

import java.util.Map;

/**
 * 动态注入bean
 */
public class CacheImportSelector implements ImportSelector {

    /**
     * @param annotationMetadata  这是注解（@EnableDefineService这个注解）的元数据（注解括号里的东西）
     * @return 返回的就是需要注入的bean名字
     */
    @Override
    public String[] selectImports(AnnotationMetadata annotationMetadata) {
        Map<String,Object> attributes=
                annotationMetadata.getAnnotationAttributes(EnableDefineService.class.getName());

        //动态注入bean :自己去实现判断逻辑实现动态配置
        /**
         * 一种很简单的逻辑是：
         * exclude里面有LoggerService，我就只加载一个，否则都加载
         */
        return new String[]{CacheService.class.getName()}; //暂时写死， 返回的是一个固定的 CacheService
        //CacheService 放到IOC里

    }
}
